﻿/*
 *  ============================================================================
 *  Name:           Gestão de parques de estacionamento
 *  Author:         João Faria
 *  Email:          a8836@alunos.ipca.pt
 *                  jfaria.gmr@gmail.com
 *  Version:        0
 *  Date:           2013-04-10
 *  Copyright:       
 *  Description:    IPCA - Programação II
 *                  Projecto final
 *  ============================================================================
 */
using System;

namespace GesParking.BusinessObjects
{
    /// <summary>
    /// Classe que gere cada registo
    /// </summary>
    public class ParkingRegistryBO
    {

        #region Estado

        Guid id, parkId, userid;
        DateTime dtIn, dtOut;
        bool payed;

        #endregion

        #region Propriedades

        /// <summary>
        /// Propriedade id
        /// </summary>
        public Guid Id
        {
            get { return id; }
            set { id = value; }
        }

        /// <summary>
        /// Propriedade id parque
        /// </summary>
        public Guid ParkId
        {
            get { return parkId; }
            set { parkId = value; }
        }

        /// <summary>
        /// Propriedade id utilisador
        /// </summary>
        public Guid UserId
        {
            get { return userid; }
            set { userid = value; }
        }

        /// <summary>
        /// Propriedade data entrada
        /// </summary>
        public DateTime DtIn
        {
            get { return dtIn; }
            set { dtIn = value; }
        }

        /// <summary>
        /// Propriedade data saida
        /// </summary>
        public DateTime DtOut
        {
            get { return dtOut; }
            set { dtOut = value; }
        }

        /// <summary>
        /// Propriedade pago
        /// </summary>
        public bool Payed
        {
            get { return payed; }
            set { payed = value; }
        }

        #endregion

        #region Construtor

        /// <summary>
        /// Construtor por omissão
        /// </summary>
        public ParkingRegistryBO() { }

        /// <summary>
        /// Construtor com parametros
        /// </summary>
        /// <param name="di">Data entrada</param>
        /// <param name="u">Id utilizador</param>
        /// <param name="p">Id Park</param>
        public ParkingRegistryBO(DateTime di, Guid u, Guid p)
        {
            id = Guid.NewGuid();
            dtIn = di;
            userid = u;
            parkId = p;
            payed = false;
        }

        /// <summary>
        /// Construtor com parametros
        /// </summary>
        /// <param name="i">Id</param>
        /// <param name="di">Data entrada</param>
        /// <param name="u">Id utilizador</param>
        /// <param name="p">Id Park</param>
        public ParkingRegistryBO(Guid i, DateTime di, Guid u, Guid p)
        {
            id = i;
            dtIn = di;
            userid = u;
            parkId = p;
            payed = false;
        }

        /// <summary>
        /// Construtor com parametros
        /// </summary>
        /// <param name="i">Id</param>
        /// <param name="di">Data de entrada</param>
        /// <param name="dout">Data saida</param>
        /// <param name="u">Id utilizador</param>
        /// <param name="p">Id Park</param>
        public ParkingRegistryBO(Guid i, DateTime di, DateTime dout, Guid u, Guid p)
        {
            id = i;
            dtIn = di;
            dtOut = dout;
            userid = u;
            parkId = p;
            payed = false;
        }

        #endregion
    }
}
